The present disclosure relates to computing and data processing, and in particular, to software test systems and methods.
Computer software programs are typically written in code defined by one of a wide variety of computer software languages. Example languages include C++, Java, Javascript, C #, and the like. A developer typically writes code that often performs many functions, and then the code may be tested and deployed. One issue that arises in a test context pertains to repeatability of each test. Ideally, if the code is functioning properly, a test of the code should pass every time the test is performed, and, if the code is not functioning properly, a test of the code should yield failures every time. More specifically, for a test that includes multiple test routines to check the performance of various sub-functions of the code, each of the test routines should either pass or fail, but not both, every time a test program is executed against the code.
However, in some cases a test may fail on some occasions and pass on others with the same configuration of the code under test. Such tests could be harmful for developers because their failures do not always indicate bugs in the code.
Another issue with software testing pertains to determining which tests, from a batch of tests, may need to be applied.
The present disclosure provides techniques for improving software testing.